<?php

namespace Caisse\CaisseBundle\Entity;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\ORM\Mapping as ORM;

/**
 * Article
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Caisse\CaisseBundle\Entity\ArticleRepository")
 */
class Article
{
     /**
     * @ORM\Column(type="string", length=255, nullable=true)
     */
    public $path;
    /**
     * @Assert\File(maxSize="6000000")
     */
    public $file;
     /**
     * @ORM\OneToMany(targetEntity="Caisse\CaisseBundle\Entity\ArticleCommande", mappedBy="article")
     */
    private $ligneArticles;
    /**
     * @ORM\ManyToOne(targetEntity="Caisse\CaisseBundle\Entity\Categorie", inversedBy="articles")
   
     */
    private $categorie;
         /**
     * @ORM\ManyToOne(targetEntity="Caisse\CaisseBundle\Entity\Etat", inversedBy="article")
   
     */
    private $etat;
    
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="nom_article", type="string", length=255)
     */
    private $nomArticle;

    /**
     * @var string
     *
     * @ORM\Column(name="description", type="text")
     */
    private $description;

    /**
     * @var float
     *
     * @ORM\Column(name="prix", type="float")
     */
    private $prix;

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set nomArticle
     *
     * @param string $nomArticle
     * @return Article
     */
    public function setCodeArticle($nomArticle)
    {
        $this->nomArticle = $nomArticle;
    
        return $this;
    }

    /**
     * Get nomArticle
     *
     * @return string 
     */
    public function getCodeArticle()
    {
        return $this->nomArticle;
    }

    /**
     * Set description
     *
     * @param string $description
     * @return Article
     */
    public function setDescription($description)
    {
        $this->description = $description;
    
        return $this;
    }

    /**
     * Get description
     *
     * @return string 
     */
    public function getDescription()
    {
        return $this->description;
    }



     /**
     * Set categorie
     *
     * @param \Caisse\CaisseBundle\Entity\Categorie $categorie
     * @return Article
     */
    public function setCategorie(\Caisse\CaisseBundle\Entity\Categorie $categorie = null)
    {
        $this->categorie = $categorie;
    
        return $this;
    }

    /**
     * Get categorie
     *
     * @return \Caisse\CaisseBundle\Entity\Categorie 
     */
    public function getCategorie()
    {
        return $this->categorie;
    }

   /**
     * Constructor
     */
    public function __construct()
    {
        $this->ligneArticles = new \Doctrine\Common\Collections\ArrayCollection();
    }
    
    /**
     * Add ligneArticles
     *
     * @param \Caisse\CaisseBundle\Entity\ArticleCommande $ligneArticles
     * @return Article
     */
    public function addLigneArticle(\Caisse\CaisseBundle\Entity\ArticleCommande $ligneArticles)
    {
        $this->ligneArticles[] = $ligneArticles;
    
        return $this;
    }

    /**
     * Remove ligneArticles
     *
     * @param \Caisse\CaisseBundle\Entity\ArticleCommande $ligneArticles
     */
    public function removeLigneArticle(\Caisse\CaisseBundle\Entity\ArticleCommande $ligneArticles)
    {
        $this->ligneArticles->removeElement($ligneArticles);
    }

    /**
     * Get ligneArticles
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getLigneArticles()
    {
        return $this->ligneArticles;
    }
    
    
    public function getAbsolutePath()
    {
        return null === $this->path ? null : $this->getUploadRootDir().'/'.$this->path;
    }

    public function getWebPath()
    {
        return null === $this->path ? null : $this->getUploadDir().'/'.$this->path;
    }

    protected function getUploadRootDir()
    {
        // le chemin absolu du répertoire où les documents uploadés doivent être sauvegardés
        return __DIR__.'/../../../../web/'.$this->getUploadDir();
    }

    protected function getUploadDir()
    {
        // on se débarrasse de « __DIR__ » afin de ne pas avoir de problème lorsqu'on affiche
        // le document/image dans la vue.
        return 'img/articles';
    }
    public function upload()
{
    // la propriété « file » peut être vide si le champ n'est pas requis
    if (null === $this->file) {
        return;
    }

    // utilisez le nom de fichier original ici mais
    // vous devriez « l'assainir » pour au moins éviter
    // quelconques problèmes de sécurité

    // la méthode « move » prend comme arguments le répertoire cible et
    // le nom de fichier cible où le fichier doit être déplacé
    $this->file->move($this->getUploadRootDir(), $this->file->getClientOriginalName());

    // définit la propriété « path » comme étant le nom de fichier où vous
    // avez stocké le fichier
    $this->path = $this->file->getClientOriginalName();

    // « nettoie » la propriété « file » comme vous n'en aurez plus besoin
    $this->file = null;
}


    /**
     * Set path
     *
     * @param string $path
     * @return Article
     */
    public function setPath($path)
    {
        $this->path = $path;
    
        return $this;
    }

    /**
     * Get path
     *
     * @return string 
     */
    public function getPath()
    {
        return $this->path;
    }

    /**
     * Set nomArticle
     *
     * @param string $nomArticle
     * @return Article
     */
    public function setNomArticle($nomArticle)
    {
        $this->nomArticle = $nomArticle;
    
        return $this;
    }

    /**
     * Get nomArticle
     *
     * @return string 
     */
    public function getNomArticle()
    {
        return $this->nomArticle;
    }

    /**
     * Add etats
     *
     * @param \Caisse\CaisseBundle\Entity\Etat $etats
     * @return Article
     */
    public function addEtat(\Caisse\CaisseBundle\Entity\Etat $etats)
    {
        $this->etats[] = $etats;
    
        return $this;
    }

    /**
     * Remove etats
     *
     * @param \Caisse\CaisseBundle\Entity\Etat $etats
     */
    public function removeEtat(\Caisse\CaisseBundle\Entity\Etat $etats)
    {
        $this->etats->removeElement($etats);
    }

    /**
     * Get etats
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getEtats()
    {
        return $this->etats;
    }

    /**
     * Set etat
     *
     * @param \Caisse\CaisseBundle\Entity\Etat $etat
     * @return Article
     */
    public function setEtat(\Caisse\CaisseBundle\Entity\Etat $etat = null)
    {
        $this->etat = $etat;
    
        return $this;
    }

    /**
     * Get etat
     *
     * @return \Caisse\CaisseBundle\Entity\Etat 
     */
    public function getEtat()
    {
        return $this->etat;
    }


    /**
     * Set prix
     *
     * @param float $prix
     * @return Article
     */
    public function setPrix($prix)
    {
        $this->prix = $prix;
    
        return $this;
    }

    /**
     * Get prix
     *
     * @return float 
     */
    public function getPrix()
    {
        return $this->prix;
    }
}